package Controllers

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"os"
	"yz-go/Common"
)

func NewLogger() (*zap.Logger, error) {

	cfg := zap.NewProductionConfig() // 等同于 zap.NewProduction()  只是在这里面加了一点配置

	dirPath := "./Log"

	if _, err := os.Stat(dirPath); os.IsNotExist(err) {
		// 文件夹不存在，创建文件夹
		err := os.MkdirAll(dirPath, os.ModePerm)
		if err != nil {
			fmt.Println("无法创建文件夹:", err)

		}
		fmt.Println("文件夹创建成功!")
	} else {
		fmt.Println("文件夹已存在!")
	}
	// 这里的日志路径是指向的是当前项目的根目录下面的，可能也会不一样
	cfg.OutputPaths = []string{
		"./Log/test.log", // 这里是一个切片 表示 可以写入到多个文件中
		"stderr",         // 把这个加上 表示 也 可以在终端显示输出
	}
	return cfg.Build()
}

func LoggerFileTest(c *gin.Context) {

	Logger, err := NewLogger()
	if err != nil {
		// 初始化失败
		panic(err)
	}

	su := Logger.Sugar()
	defer su.Sync()
	url := "http:// www.baidu.com"
	su.Info("failed to fetch url",
		zap.String("url", url),
	)
}

func LoggerFileSet(logger Common.Logger) {
	Logger, err := NewLogger()

	if err != nil {
		// 初始化失败
		panic(err)
	}

	su := Logger.Sugar()

	defer su.Sync()

	str := fmt.Sprintf("%s:%d:%s", logger.Msg, logger.Status, logger.Data)

	su.Info(str)
}
